package com.yuxi.al.queue;

import java.util.Queue;
import java.util.concurrent.LinkedBlockingQueue;

/**
 * Created by yuxi on 2017/8/27.
 */
public class TwoQueueImplStack {
    static Queue q1 = new LinkedBlockingQueue();
    static Queue q2 = new LinkedBlockingQueue();

    public static void main(String[] args) {

        //enqueue
        for (int i = 0; i < 10; i++) {
            enQueueImplStack(q1, i);
        }
        System.out.println("start 出队列");
        //dequeue
//        for (int i = 0; i < 5; i++) {
//            deQueueImplStack(q1, q2);
//        }
        for (int i = 0; i < 10; i++) {
            deQueueImplStack(q1, q2);
        }
    }

    /**
     * 出栈
     *
     * @param q1
     * @param q2
     */
    private static void deQueueImplStack(Queue q1, Queue q2) {
        int i = 0;
        int size = q1.size();
        while (i < (size - 1)) {
            i++;
            q2.add(q1.poll());
        }
        //出栈
        System.out.println(q1.poll());
        //q2需要赋值回去给q1
        while (!q2.isEmpty()) {
            q1.add(q2.poll());
        }
        System.out.println(q1);
    }

    /**
     * 入栈
     *
     * @param q1
     */
    private static void enQueueImplStack(Queue q1, int k) {
        q1.add(k);
//        System.out.println(q1);
    }
}
